function getData(str){
	try{
		var f = new Function("return ("+str+");")();
		return parseFloat(f);
	}catch(err){
		return null;
	}
}
function $(s){
	return document.getElementById(s);
}
// 防御计算
var def_00 = $("def_00");
var def_01 = $("def_01");
var def_10 = $("def_10");
var def_11 = $("def_11");
def_00.onkeypress = function(e){
	e = e || window.event;
	if(e.keyCode==13){
		if(e && e.preventDefault) e.preventDefault();  
	    else e.returnValue = false;
		getDamage();
	}
};
def_10.onkeypress = function(e){
	e = e || window.event;
	if(e.keyCode==13){
		if(e && e.preventDefault) e.preventDefault();  
	    else e.returnValue = false;
		getDamage();
	}
};
// 计算器
var content1 = $("content1");
var endcontent1 = $("endcontent1");
content1.onkeypress = function(e){
	e = e || window.event;
	if(e.keyCode==13){
		if(e && e.preventDefault) e.preventDefault();  
	    else e.returnValue = false;
		try{
			endcontent1.value = window.eval(content1.value.replace(/【.*?】/g,""));
		}catch(err){
			endcontent1.value = "ERROR";
		}
	}
};
/* 伤害计算 */
var atk1 = $("atk1");	// 黄色伤害 - 原始伤害
var atk2 = $("atk2");	// 红色伤害 - 臂力加成
var atk3 = $("atk3");	// 蓝色伤害 - 内息加成
var atk4 = $("atk4");	// 绿色伤害 - 身法加成
var atk5 = $("atk5");	// 紫色伤害 - 兵录加成
/* 加成 */
var add1 = $("add1");	// 内功属性加成
var add2 = $("add2");	// 装备加成
var add3 = $("add3");	// 批注书加成
var add4 = $("add4");	// 特殊加成
/* 特殊类 */
var count = $("count");	// 技能攻击次数
var add10 = $("add10");	// 宝物技能加成
var add20 = $("add20");	// 宝物暴击伤害加成
var add30 = $("add30");	// 经脉暴击伤害加成
var add40 = $("add40");	// 内功暴击伤害加成
/* 结果 */
var damage_all1 = $("damage_all1");	// 技能总伤害
var damage_count1 = $("damage_count1");	// 技能每击伤害
var damage_all2 = $("damage_all2");	// 技能全暴击总伤害
var damage_count2 = $("damage_count2");	// 技能暴击每击伤害
/* 事件 */
var alldata = $("alldata");
var go_start = $("go_start");
function getDamage(){
	/* 判断数据 */
	var data={
		"atk1":getData(atk1.value),
		"atk2":getData(atk2.value),
		"atk3":getData(atk3.value),
		"atk4":getData(atk4.value),
		"atk5":getData(atk5.value),
		"add1":getData(add1.value),
		"add2":getData(add2.value),
		"add3":getData(add3.value),
		"add4":getData(add4.value),
		"count":getData(count.value),
		"add10":getData(add10.value),
		"add20":getData(add20.value),
		"add30":getData(add30.value),
		"add40":getData(add40.value)
	};
	var flag = true;
	for(var i in data){
		if(data[i]===null){
			window[i].value="数据错误";
			flag = false;
		}
	}
	if(flag){
		var init_panel = data.atk1 + data.atk2 + data.atk3 + data.atk4;	// 属性伤害
		var init_pre_attack = init_panel / data.count;	// 属性伤害 每击
		var hero_item_pre = data.add10 * ( 1 + data.add1 ); // 宝物加成伤害 每击
		var hero_item_pre_c = hero_item_pre * ( 2 +  data.add20 + data.add30 + data.add40); // 宝物加成伤害 每击 暴击
		var hero_attack_pre = init_pre_attack * ( 1 + data.add1 ) * ( 1 + data.add2 + data.add3 ) * ( 1 + data.add4 ); // 人物伤害 每击
		var hero_attack_pre_c = hero_attack_pre * ( 2 +  data.add20 + data.add30 + data.add40); // 人物伤害 每击 暴击
		var add_pre_atk5 = data.atk5 / data.count;	// 兵录伤害 每击
		var all_damage = ( hero_item_pre +  hero_attack_pre + add_pre_atk5 ) * data.count;	// 总伤害
		var all_damage_c = ( hero_item_pre_c +  hero_attack_pre_c + add_pre_atk5 ) * data.count;	// 总伤害 全暴击
		var count_damage_all =  hero_item_pre + hero_attack_pre + add_pre_atk5;	// 每击伤害
		var count_damage_all_c = hero_item_pre_c + hero_attack_pre_c + add_pre_atk5;	// 每击伤害 暴击
		damage_all1.value = all_damage.toFixed(1);
		damage_count1.value = count_damage_all.toFixed(1);
		damage_all2.value = all_damage_c.toFixed(1);
		damage_count2.value = count_damage_all_c.toFixed(1);
		var wg_def = getData(def_00.value);
		if(wg_def!==null){
			var wg_jy = wg_def * 0.0001 / (1 + wg_def * 0.0001);
			def_01.value = (wg_jy * 100).toFixed(4) + "%";
			$("wg_sh").value = (( 1 - wg_jy ) * count_damage_all).toFixed(2);
			$("wg_sh_c").value = (( 1 - wg_jy ) * count_damage_all_c).toFixed(2);
		}else{
			def_00.value = "无效数据";
		}
		var ng_def = getData(def_10.value);
		if(ng_def!==null){
			var ng_jy = ng_def * 0.001 / (1 + ng_def * 0.001);
			def_11.value = (ng_jy * 100).toFixed(4) + "%";
			$("ng_sh").value = (( 1 - ng_jy ) * count_damage_all).toFixed(2);
			$("ng_sh_c").value = (( 1 - ng_jy ) * count_damage_all_c).toFixed(2);
		}else{
			def_10.value = "无效数据";
		}
	}
}
atk1.onkeypress = atk2.onkeypress = atk3.onkeypress = atk4.onkeypress = atk5.onkeypress = 
add1.onkeypress = add2.onkeypress = add3.onkeypress = add4.onkeypress = 
count.onkeypress = add10.onkeypress = add20.onkeypress = add30.onkeypress = add40.onkeypress = function(e){
	e = e || window.event;
	if(e.keyCode==13){
		if(e && e.preventDefault) e.preventDefault();  
	    else e.returnValue = false;
		getDamage();
	}
};
go_start.onclick = function(e){
	if(e && e.preventDefault) e.preventDefault();  
    else window.event.returnValue = false;
	getDamage();
};
